문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 객체 지향 프로그래밍 (문단 편집) === 지원하는 언어 === * [[Smalltalk]] 언어 앨런 케이가 1972년 팔로 알토 리서치 센터([[PARC]])에서 만든 [[Smalltalk]]가 최초로 OOP를 지원한 프로그램이다. 시뮬레이션 [[프로그래밍 언어]]인 [[http://en.wikipedia.org/wiki/Simula|시뮬라-67]]에서 영향을 받았다. 스몰토크는 앨런 케이가 "누구나 쉽게 사용할 수 있는 컴퓨터"를 만들려고 했던 목적에 따라 만들어졌다. 문제는 앨런 케이가 글을 읽고 쓸 수만 있으면 4-5세의 아이들도 프로그래밍 할 수 있는 것을 이상적인 목표로 했기 때문에 프로그래밍을 하고자 하는 목표를 수학적 논리구조([[알고리즘]])로 개념화한 뒤에 그에 따라 프로그래밍 하는 게 아니고[* "1+2" 라는 수식도 수식으로 보지 않는다. "1"이라는 객체에 "+2"라는 메세지를 보내는것으로 본다. 괄호를 제외한 사칙연산의 순서도 생각하지 않는다. 1+2X2이면, 순서대로 "1"이라는 객체에 "+2","X2"라는 메세지를 보내서 연산할 뿐이다. --객체지향이지만 사칙연산 곱셈부터 하는 언어들은 본받아야 한다--] 비 수학적인 사고로 문제를 해결하도록 언어가 설계되어 있었고, 이 때문에 모든 것을 객체 단위로 분해하고 그 객체들이 메시지를 전달하여 문제를 해결하도록 프로그래밍을 해야만 한다. * [[Ruby]]와 [[Python]] [[Ruby]]: Smalltalk의 계보를 잇는 순수 객체지향 언어. 기존의 C++나 Java 등에 비해서 난이도가 낮다. [[Python]]: 역시 순수 객체지향을 지원하고 있다. Ruby와 비슷한 구조를 가지고 있으며, 미세한 명령어나 기법 차이 등이 있을 뿐, 거의 형제처럼 가까운 언어들이다. [[생활코딩]]에서는 이 두 언어를 거의 똑같은 언어라고 설명하면서 루비와 파이썬의 코딩을 동시에 가르치는 강좌를 개설해 놓았다. * C언어에 객체 처리 기능 추가 브레스 콕스와 톰 러브는 스몰토크를 보고 새로운 시각으로 객체지향을 바라보았는데 그것은 '''[[소스 코드]]의 수정없는 재활용'''이었다. 그들은 이 개념을 실제 언어에 적용하여 1983년도에 스몰토크의 객체 처리 방식을 [[C(프로그래밍 언어)|C언어]]에 추가했다. C언어의 표준을 지키면서 스몰토크 방식의 객체 처리 기능을 추가한 것이다. 이렇게 표준 언어에 기능을 추가하는 것을 슈퍼셋(Superset)이리고 한다. 반대로 표준언어의 기능을 축소한 것을 서브셋(Subset)이라고 한다. 컴파일러 개발 방법을 교육할 목적으로 만든 [[http://en.wikipedia.org/wiki/Small-C|Small-C]]가 대표적인 서브셋이다. * [[C++]] 1983년에 비아르네 스트로우스트루프가 C언어를 확장시킨 [[C++]]를 발표했다. * [[Objective-C]] 1983년에 브래드 콕스와 톰 러브가 C언어에서 파생된 [[Objective-C]]를 만들어 발표했고 실제 유용하다는 것을 실증하였다. 그리고, Objective-C는 1989년 당시 가장 혁신적인 [[운영체제]]였던 [[NeXTSTEP]]을 개발할 때 사용되었다. [[NeXTSTEP]]은 1996년도에 [[Apple]]에 인수되어 2001년도에 출시된 [[OS X|Mac OS X]]의 기반이 되었다. 이후에는 Swift가 Objective-C를 계승한 상태다. * 기타 여러 언어들 이 두 언어의 성공으로 이후 [[Java]], [[C\#]], [[파스칼(프로그래밍 언어)|Objective-Pascal]] 등 많은 객체 지향 언어들이 순수한 객체 지향보다는 기존의 프로그래밍 언어에 객체 지향 요소를 확장하거나 추가한 형태로 만들어지게 되었다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기